iT邦幫忙

DAY 23
4

邊看邊學Groovy/Grails/Gradle系列 第 20

Grails-Controlle概念與語法介紹(1)

  • 分享至 

  • xImage
  •  

之前的分享大致上已把MVC中的M做了簡單的介紹,建立Domain Class、建立關聯以及GORM基礎的query語法,今天開始要跟大家分享Controller/View之間如何互動,之前或多或少有沾到一些邊,例如建立搜尋頁面,未來幾天將跟大家介紹例如如何重新導向某個網頁,View部分將介紹grails tag等,今天將先以PostController為例,跟大家分享。
一開始先跟大家解析一個網址,應該算是常識吧

http://localhost:8080/JasonMicroBlog/user/list

當Server收到此網址的時候,在Servlet裡面會找對應的Url Mapping,但在Grails裡面則簡化成搜尋是否存在該controller,例如以上為例,Server便會尋找是否有該名稱(JasonMicroBlog or user)的controller,則預設導向該Controller的index.gsp

http://localhost:8080/JasonMicroBlog/index.gsp



http://localhost:8080/JasonMicroBlog/user/index

而在view/user/底下目前並沒有index.gsp檔案,是因為我們宣告scaffold屬性為true,故預設導向list這個網頁,在之前也示範過自己可以定義新的GSP網頁,如search/advsearch,只要在UserController宣告

def advsearch(){}

即可透過網址列存取該網頁

故今天以列出某位使用者以post的網頁為例

1.首先到PostController.groovy新增欲導向的網址,我命名為posthistory

class PostController {

    static scaffold = true
	
	def posthistory(){
		def result=User.findbyUserid(params.id)
		if(!user){
			response.sendError(404)
		}else{
			[user:user]
		}
	}
}

2.到view/post目錄底下新增posthistory.gsp

        <title>All Posts for ${ user.profile ? user.profile.fullName : user.loginId }</title>
        <meta name="layout" content="main"/>
    
    

        <div id="newPost">

            <h3>
                 Hi!${ user.profile ? user.profile.fullName : user.loginId }. What do you want to share right now?
            </h3>
			
			<div class="allPosts">
            <g:each in="${user.posts}" var="post">
                <div class="postEntry">
                    <div class="postText">${post.content}</div>
                    <div class="postDate">${post.dateCreated}</div>
                </div>
            </g:each>
        </div>
						
        </div>
    

Note:
g:each這個tag很好用,可以iterate所有的post

用Jason這位User新增三筆Post紀錄

接下來只要在網址列打入

http://localhost:8080/JasonMicroBlog/post/posthistory/Jason

PostController將尋找在view/post下的posthistory.gsp檔,並以UserId:Jason當作傳入參數

故應該就會跑出來對應之網頁
只可惜.....failure....

因今天等會組內聚餐,大概要醉了,沒時間debug,明天再來修正,不好意思囉


上一篇
Grails-基礎GORM Query語法介紹(HQL簡易語法)
下一篇
Grails-Controller概念與語法介紹(2)
系列文
邊看邊學Groovy/Grails/Gradle27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言